iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
AI & Data

人工智慧(RL系列) 完爆遊戲30天系列 第 14

Day14 keras layers(上)

  • 分享至 

  • xImage
  •  

這幾天我們要講如何搭DQN的model,如果有玩過CNN的同學可直接跳過這章節,這篇會盡可能用好理解方式,讓沒接觸過CNN的讀者能有些概念。

計算框架

稍微了解過AI的人應該都聽過tensorflow,跟pytorch一樣皆是類神經的計算框架,提供高效率、便捷的計算方法,讓使用者很彈性的建構類神經網路。不過我們將會使用Keras-高階封裝的類神經框架,底層也是tensorflow運作(新版的tensorflow聽說要keras化了),搭建個13層的network,由卷積(Conv2D)、池化層(MaxPooling2D)、激活層(Activation)、平展層(Flatten)、隱藏層(Dense)所組成,這章我們先來介紹卷積跟池化層。

卷積層

卷積可想像成對於圖像,會有小視窗(濾鏡/filter)逐格橫掃。

早期某些圖像處理,會用3x3或5x5的filter使用固定的權重,做影像處理,例如銳利化。
https://ithelp.ithome.com.tw/upload/images/20191001/20121110qklO6g3Qb3.jpg
如果圖像通過了好幾層的卷積做處理,可讓網路從一開始的輪廓解析,至局部解析,最後到接近輸出端衍生全局解析,進而達到對整張照片預測。對卷積不熟的人建議可以實際動手算一遍,其實卷積計算很簡單,在每次移動時會讓掃的地方match值相乘,接著把相乘結果相加做總和。
https://ithelp.ithome.com.tw/upload/images/20191001/20121110onIh1TJVTx.png
可調的參數很多,我們僅會介紹會重要的幾個:
keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid')

  • filters:卷積的數量。大部分的視覺模型都是前面的filter比較少,後面越來越多,因為前面的卷積處理形狀、輪廓,後面為整塊或較複雜的理解。
  • kernel_size:濾鏡大小。兩個3x3等同於1個5x5的卷積,但2個3x3計算效率優於1個5x5的。
  • strides:更新的移動步數。卷積在圖像上的移動幅度,設定(1, 1)的話變是x軸、y軸,全部的點逐格掃描。
  • padding:補邊方法,主要用兩種valid跟same。same會像上面圖示一樣,針對外邊在增加一層,使得4x4的輸出最後仍是4x4。如果是valid的話,4x4影像用3x3卷積去掃,後面大小輸出會變成2x2。

池化層

池化層是種資訊壓縮的方法,設定好大小(通常都設2x2),簡化值(2x2→1x1)。有取最大值方法(maxpool-pooling)跟平均值方法(average-pooling)。原因是很多影像的局部有很多不必要空白,除了減少計算資源外,還可把重要資訊保留,不重要的捨棄(去噪),以此增加模型的收斂跟穩定性。
https://ithelp.ithome.com.tw/upload/images/20191001/20121110HtV0fQOFhF.png
keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid')

  • pool_size:池化大小。
  • strides:預設值為None,None的話strides就會等同pool_size的值。
  • padding:補邊方法。

結語

今天介紹兩個是影像處理非常通用的layer,還有其他種例如擴充卷積、轉至卷積、可分離卷積,有興趣都可以再研究看,每個卷積都有不同的特性跟應用場景。我們明天見拉!


上一篇
Day13 視覺化&前處理
下一篇
Day15 keras layers(下)
系列文
人工智慧(RL系列) 完爆遊戲30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言